package com.hunter.api.help;

import com.alibaba.fastjson.JSONObject;

import org.apache.commons.lang3.StringUtils;

public class DbHelper {


    /**
     * 根据sql模板，拼接sql
     *
     * @param template sql模板，参数变量用 ${变量名} 代替
     * @param params   参数
     * @return 拼接好的SQL，注意：可能为空字符串
     */
    public static String buildSql(String template, JSONObject params) {
        return buildSql(template, params, true);
    }

    public static String buildSql(String template, JSONObject params, boolean escapeString) {
        String sql = template;

        if(params==null){
            return template;
        }

        for (String  key : params.keySet()) {
            String value = escapeSql(params.get(key)) ;

            value= StringUtils.replace(value,"${","${___");
            sql = StringUtils.replace(sql,"${" + key + "}", value);
        }

        sql=StringUtils.replace(sql,"${___","${");
        return sql;
    }


    /**
     * 将对象值转换成可用SQL字符串
     *
     * @param value 要转换的对象，一般为 null，数字，字符串等
     * @return 若干value=null，则返回字符串“null”，否则value.tostring()之后，将其中单引号替换为双引号
     */
    public static String escapeSql(Object value) {
        return (value == null) ? "null" : StringUtils.replace(value.toString(), "'", "''");
    }
}
